const fs = require('fs');

/*
    前面我们学习了fs对于文件的基本操作，不过你有想过一个问题吗，如果我们未来遇到的文件非常大，怎么办？总不能直接全拿出来然后放内存里把，这也太浪费空间了。所以我们伟大的node开发者提出了stream(流)这么一个东西，将数据比作水流，当水在管中流动的时候，数据就可以从源头流入目的地。不需要了的时候就把水流停止即可。那么具体的使用是什么样呢？我们往下看
*/

// 通过fs.createReadStream来创建一个可读数据流。这个方法接受两个参数，第一个是要读取得文件的位置，第二个参数是格式
let readStream = fs.createReadStream('./1.txt','utf-8');

/*
    readStream通过on方法来监听数据的情况。共接收两个参数
        第一个参数为标识符：'data'表示数据，'end'表示读取结束，'error'表示遇到问题
        第二个参数为回调函数：
            - 当标识符为'data',则回调函数进行数据的读取，像接水一样接取数据，回调函数中chunk表示接受到的数据
            - 当标识符为'end', 则回调函数会在读取结束时执行
            - 当标识符为'error', 则回调函数会在遇到问题时执行，形参err为错误信息
*/
readStream.on('data',chunk=>{
    console.log('数据: '+chunk);
})

readStream.on('end',()=>{
    console.log('读取完毕');
})

readStream.on('error',err=>{
    console.log(err);
})
